
"""
作用 ： 为所有调用接口提供公共功能 ，方便接口调用
具体功能 ：
    1. 返回完整的URL地址
    2. 重新封装get和post
    3. 处理请求头
"""
import requests
from utils.object_utils import cache
from setting import BASE_URL
from loguru import logger

class Base:

    def get_url(self,path,params=None):
        """
        返回完整的URL地址 ，比如 ：http://ip:port/api?params
        :param path: 接口地址
        :param params: 查询参数
        :return:
        """

        api_path = "".join([BASE_URL,path])
        if params:
            full_path = "?".join([api_path,params])
            return full_path

        return api_path

    def get(self,url):
        """
        （1）. 加上日志 :loguru
        （2）. 返回JSON格式
        :return:
        """
        result = None
        response = requests.get(url,headers=self._get_headers())
        try:
            result = response.json()
            logger.success("请求URL:{},返回结果:{}".format(url,result))
            return result
        except Exception as e:
            logger.error("请求get方法异常,返回数据{},异常:{}".format(result,e))

    def post(self,url,data):
        result = None
        response = requests.post(url,json=data,headers=self._get_headers())
        try:
            result = response.json()
            logger.success("请求URL:{},请求体:{},返回结果:{}".format(url,data,result))
            return result
        except Exception as e:
            logger.error("请求post方法异常，返回数据:{}".format(result))

    def _get_headers(self):
        headers = {"Content-Type":"application/json"}
        token = cache.get('token')
        if token:
            headers.update({'X-Litemall-Admin-Token':token})
            return headers

        return headers



if __name__ == '__main__':
    base = Base()
    result = base.get_url("/admin/admin/list","page=1&limit=20&sort=add_time&order=desc")
    print(result)